﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AGPR.Locadora.Data;

namespace AGPR.Locadora.Model
{
    /// <summary>
    /// Classe de Estado
    /// </summary>
    public class Estado
    {
        private static ActiveRecord db = ActiveRecord.Instancia;

        #region Atributos

        /// <summary>
        /// Tabela de Estado no Banco de Dados
        /// </summary>
        const string TABELA = "estado";

        /// <summary>
        /// Código do Estado
        /// </summary>
        public int id { get; set; }

        /// <summary>
        /// Nome do Estado
        /// </summary>
        public string nome_estado { get; set; }

        /// <summary>
        /// Sigla do Estado
        /// </summary>
        public string sigla_estado { get; set; }

        #endregion

        #region Construtor

        /// <summary>
        /// Construtor que popula os dados se necessário
        /// </summary>
        /// <param name="dados">Dados a serem populados</param>
        public Estado(dynamic dados = null)
        {
            if (dados != null)
            {
                this.id = Convert.ToInt32(dados["id_estado"]);
                this.nome_estado = dados["nome_estado"];
                this.sigla_estado = dados["sigla_estado"];
            }
        }

        #endregion

        #region getAll

        /// <summary>
        /// Retorna todos os estados em forma de lista
        /// </summary>
        /// <returns>Estados</returns>
        public static List<Estado> GetAll()
        {
            List<Estado> estados = new List<Estado>();

            foreach (var estado in db.select(TABELA))
            {
                estados.Add(new Estado(estado));
            }

            return estados;
        }

        #endregion

        #region Html

        /// <summary>
        /// Retorna lista de estados em html
        /// </summary>
        /// <param name="estadoAtual">Estado padrão</param>
        /// <returns>Html de Estados</returns>
        public static string Html(string estadoAtual = null)
        {
            string html = "", selected;

            foreach (Estado e in GetAll())
            {
                selected = e.sigla_estado == estadoAtual ? " selected=\"selected\"" : "";
                html += "<option value=\""+ e.sigla_estado +"\" "+ selected +">"+ e.sigla_estado +"</option> \n";
            }

            return html;
        }

        #endregion
    }
}
